
export default {
  data() {
    return {
      flag: true, // 控制选择第一个元素量,不要删除
      currentSelect: '',
      screenObj: {
        groupColumn: "satType",
        satName: ""
      },//用于选择列表以什么类型展示,
      currentCheck: [], // 当前勾选,
      defaultProps: { children: 'children', label: 'label' },
    }
  },
  computed: {
  },
  watch: {
    treeData: function (newData) {
      this.handleListData()
    }
  },
  
  methods: {
    /**
     * 树点击
     * @author wzw
     * @date 2021-12-13
     * @param {any} item
     * @returns {any}
     */
    handleNodeClick(item) {
      if (!this.showCheck && item !== this.currentSelect) {
        this.currentSelect = item
        this.currentCheck = [item.id]
        this.$emit('click', item)
      }
    },
    /**
     * 树勾选
     * @author wzw
     * @date 2021-12-13
     * @param {any} node
     * @param {any} data
     * @returns {any}
     */
    handleCheck(node, data) {
      this.currentCheck = data.checkedKeys
      this.$emit('check', data.checkedKeys)
    },

    /**
     * 不显示勾选框下选择第一个元素
     * @author wzw
     * @date 2021-12-13
     * @param {any} _data
     * @returns {any}
     */
    findFirstTreeEle(_data) {

      _data.map(item => {
        if (item.children && item.children.length > 0 && this.flag) {
          this.findFirstTreeEle(item.children)
        } else {
          if (this.flag) {
            this.flag = false
            this.$nextTick(() => {
              let el = this.$refs[this.refName]
              el.setCurrentKey(item.id)
              this.handleNodeClick(item)
            })

          }
        }
      })
    },
    /**
     *搜索按钮触发事件
     *@author:ZZQ
     *@date :2021-11-22 15:59
    */
    screenClick() {
      this.$emit('screen', this.screenObj)
    },
    // 初始化勾选
    initCheck() {
      let keys = this.getAllIds(this.treeData)
      this.currentCheck = keys
      this.$refs[this.refName].setCheckedKeys(this.currentCheck)
    },
    /**
     * 循环找到所有ID
     * @author wzw
     * @date 2021-12-13
     * @param {any} data
     * @returns {any}
     */
    getAllIds(data) {
      let res = []
      if (data.length > 0) {
        data.forEach(item => {
          res.push(item.id)
          if (item.children && item.children.length > 0) {
            let tmp = this.getAllIds(item.children)
            res = res.concat(tmp)
          }
        })
      }
      return res
    },
    /**
     * 处理列表数据返回后操作
     * @author wzw
     * @date 2021-12-13
     * @returns {any}
     */
    handleListData() {
      console.log('数据', this.treeData, this.showCheck, this.isInitCheck);
      this.currentCheck = []
      let data = this.treeData
      // 空数组触发一次change事件，通知外部组件
      if (data.length === 0) {
        this.$emit('check', this.currentCheck)
        return
      }
      // 如果不显示勾选框，默认选中第一个最低级元素
      if (!this.showCheck) {
        this.findFirstTreeEle(data)
      } else if (this.showCheck && this.isInitCheck) {
        // 如果显示勾选框，且初始化时勾选全部，处理
        this.initCheck()
      } else if (this.showCheck && !this.isInitCheck) {
        // 如果显示勾选框，且初始化时没有勾选全部，处理
        this.handleDefaultCheck()
      }
      this.$emit('check', this.currentCheck)

    },
    handleDefaultCheck() {
      let tmp = []
      if (this.defaultCheckedKeys.length > 0) {
        tmp = this.$refs[this.refName].getCheckedKeys()
      }
      this.currentCheck = tmp
    }

  }
}
